package main

/*
最初记事本上只有一个字符 'A' 。你每次可以对这个记事本进行两种操作：
Copy All（复制全部）：复制这个记事本中的所有字符（不允许仅复制部分字符）。
Paste（粘贴）：粘贴 上一次 复制的字符。
给你一个数字n ，你需要使用最少的操作次数，在记事本上输出 恰好n个 'A' 。返回能够打印出n个 'A' 的最少操作次数。
*/
func main() {
	println(minSteps(100))
}

/**
 *	minSteps
 *	@Description:动态规划
 *	@param n int
 *	@return min int
 */
func minSteps(n int) (min int) {
	min = 0
	A := 1
	for i := 0; A != n; {
		if n%A == 0 {
			i = A
			min++
		}
		A += i
		min++
	}
	return min
}
